Dart 重要概念
Lawrence 2023/5/11
# Dart 重要概念
当你在学习 Dart 语言时,应该牢记以下几点:
- 所有变量引用的都是对象,每个对象都是一个 类 的实例。数字、函数以及 null 都是对象。除去 null 以外(如果你开启了空安全),所有的类都继承于 Object 类。
- 尽管 Dart 是强类型语言,但是在声明变量时指定类型是可选的,因为 Dart 可以进行类型推断。
- 如果你开启了空安全,变量在未声明为可空类型时不能为 null。你可以通过在类型后加上问好(?)将类型声明为可空。例如,
int?
类型的变量可以是整型数字或 null。如果你 明确知道 一个表达式不会为空,但 Dart 不这么认为时,你可以在表达式后添加 ! 来断言表达式不为空(为空时将抛出异常)。例如:int x = nullableButNotNullInt!
。 - 如果你想要显式地声明允许任意类型,使用
Object?
(如果你开启了空安全)、Object 或者特殊类型 daynamic 将检查延迟到运行时进行。 - Dart 支持泛型,比如
List<int>
(表示一组由 int 对象组成的列表)或List<Object>
(表示一组由任何类型对象组成的列表)。 - Dart 支持顶级函数(例如 main 方法),同时还支持定义属于类或对象的函数(即静态和实例方法)。你还可以在函数中定义函数(嵌套或局部函数)。
- Dart 支持顶级变量,以及定义属于类或对象的变量(静态和实例变量)。
- Dart 没有类似于 Java 那样的 public、protected 和 private 成员访问限定符。如果一个标识符以下划线(_)开头则表示该标识符在库内是私有的。
- 标识符可以以字母或者下划线(_)开头,其后可跟字符和数字的组合。
- Dart 中表达式和语句是有区别的,表达式有值而语句没有。比如条件表达式
expression condition ? expr1 : expr2
中含有 expr1 和 expr2。与 if-else 分支语句相比,if-else 分支语句则没有值。一个语句通常包含一个或多个表达式,但是一个表达式不能只包含一个语句。 - Dart 工具可以显示 警告 和 错误 两种类型的问题。警告表明代码可能有问题但不会阻止其运行。错误分为编译时错误和运行时错误;编译时错误代码无法运行;运行时代码会在代码运行时导致异常。